package com.ld.service;

import com.ld.entity.Film;
import com.ld.entity.Rental;
import com.ld.entity.Store;
import org.apache.ibatis.annotations.Param;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

public interface StoreService {

    /**
     *
     * @param filmId 传入电影id,返回所有拥有此影片的店铺id
     */
    @Transactional
     List<Integer> getFilmOwnerStoreId(Integer filmId);

    /**
     * @param filmId 电影id
     * @param storeId 店铺id
     * @return 这部电影在这家店有多少库存 = 原本库存 -为归还数量
     */
     Integer getCurrentFilmCount(Integer filmId,Integer storeId);


    /**
     * @param filmId 传入电影id
     * @return 有则返回店铺信息list<Store> 无则返回null
     */
     List<Store> getStoreCurrentFilmCount(Integer filmId);

    /**
     * @param storeId 店铺id
     * @param currentPage 当前页
     * @param pageSize 每页大小
     * @return 这家店所有尚未归还的信息
     */
     Map<String,Object> getAllUnreturnedInfo(Integer storeId, Integer currentPage, Integer pageSize);

    /**
     * 结算
     * @param rental 同时update rental表 和 insert payment表
     * @return 提示信息
     */
    String clearing(Rental rental);


    /**
     * @param storeId 只能查询自家店的东西
     * @param searchType 查询类型 按电影名,按电影编号,按电影类型,按电影等级,按演员名称
     * @param searchContent 搜索内容
     * @return 返回查询结果
     */
   Map<String,Object> searchByType(Integer storeId,String searchType, String searchContent);


    /**
     * 根据演员id查询这个演员所参与的电影,只能查询自己店铺的电影
     * @param actorId 演员id
     * @param storeId 店铺id
     * @return film中的film_id,title,rating,category,inventory_id,isRental
     */
    List<Film> getWhichFilmTheActorWereInvolvedIn(Integer actorId, Integer storeId);

    /**
     * 借出
     * @param rental 包括customerId,rentalDate,inventoryId,staffId
     * @return  成功与否信息
     */
    String getCustomerRental(Rental rental);

}
